昨天已經將各個實體之間的關聯都設定好了,接下來要做的事情就是要驗證功能有沒有寫錯,此時可以先用資料庫工具手動建立幾筆資料來當測試使用。
此時可以發現到因為昨天有設外鍵的緣故,如果沒有其對應的資料是不能新增的,例如 Post 只有 id 為 2 的評論,所以在 Comment 的 post_id 只能是 2 ,如果手動填入 1 會提示沒有這筆關聯所以無法寫入,如此一來就可以保護系統不會出現孤兒資料的狀況發生。
資料建立好了之後就要開始測試關聯了,但總不可能為了要測試關聯而將整隻 API 都寫好,例如 Route、Controller、Service 等等,這時候就可以善用 Laravel 內建的工具 Tinker,先進入到 PHP 的 Docker 容器裡面,然後下指令。
docker exec -it php bash
php artisan tinker

此時就可以直接跟資料庫溝通了,先來尋找第一位使用者App\Models\User::first()
尋找 id 為 2 的使用者App\Models\User::find(2)
此時可以利用寫好的關聯將使用者寫過的評論搜尋出來,並利用 toArray() 這個 Method 使資料便於觀察App\Models\User::first()->posts->toArray()
也可以使用 with 將使用者與評論同時搜尋出來App\Models\User::with(‘posts’)->first()->toArray()
更厲害的是可以同時將使用者、評論、留言同時全部搜尋App\Models\User::with('posts')->with('posts.comments')->first()->toArray()
今天介紹完 Tinker 的基本使用,明天再來介紹其他 Model 的屬性。